package com.zengqingfa.designpattern.behavior.template.common;

/**
 *
 * @fileName: AbstractTemplate
 * @author: zengqf3
 * @date: 2021-4-9 15:10
 * @description:
 */
public abstract class AbstractTemplate {

    /**
     * 模板方法:final修饰，防止重写
     */
    public final void templateMethod() {
        //调用子类的方法
        abstractMethod();
        //父类实现的方法
        commonMethod();
    }

    /**
     * 抽象方法：由子类去实现
     */
    protected abstract void abstractMethod();

    /**
     * 基本方法(抽象类已经实现，子类拥有的共同代码)
     */
    private final void commonMethod() {
        //业务相关的代码
        System.out.println("模板类中的方法：AbstractTemplate#commonMethod");
    }
}
